מודל מעבד-זיכרון רוחב הקו בביטים בין המשתנה למעבד ב- PDP כיווני העברת המידע במודל מעבד-זיכרון SFS CPU MDR MEM MAR

Similar documents
תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

עד כה עסקנו בתוכניות שמתקדמות פקודה אחרי פקודה העתק ל- ax את הערך 3 העתק ל- bx את הערך 4 הוסף ל- ax את bx כפול את התוצאה ב- 2 והעתק ל- cx

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

מבנה מחשבים ספרתיים תרגול מס' חזרה על ארכיטקטורת ה-

ASP.Net MVC + Entity Framework Code First.

7 קרפ תויגול,תויטמתירא תודוקפ הזזהו

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

זה. Nir Adar

לאחר מכן נוכל לכתוב תוכניות שכוללות אלגוריתמים

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

Practical Session No. 13 Amortized Analysis, Union/Find

מבוא לתכנות ב- JAVA תרגול 7

הרצאה מספר 10 נושאים לשיעור זה: סיכום הפקודות עד לשיעור זה *** )S-Q( = מקומות בהם ניתן לשלב תתי שאילתות

שאלון ו' הוראות לנבחן

מבוא לאסמבלי מאת אופיר בק חלקים נרחבים ממאמר זה נכתבו בהשראת הספר "ארגון המחשב ושפת סף" אשר נכתב ע"י ברק גונן לתוכנית גבהים של משרד החינוך.

א נ ג ל י ת בהצלחה! ב. משרד החינוך בגרות לנבחנים אקסטרניים )מילון הראפס אנגלי-אנגלי-ערבי( השימוש במילון אחר טעון אישור הפיקוח על הוראת האנגלית.

סיכומים למבחן בקורס מבנה מחשבים

וכתובות. מספרים כתובת

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

שאלון ו' הוראות לנבחן

אנגלית (MODULE E) בהצלחה!

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

המבנה הגאומטרי של מידה

מבוא למחשב בשפת פייתון

שאלון ד' הוראות לנבחן

תרגול 8. Hash Tables

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון ב' Corresponds with Module B גרסה ב' הוראות לנבחן

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

אנגלית שאלון ז' (MODULE G) ג רסה א' הוראות לנבחן )מילון אנגלי-ערבי / ערבי-אנגלי )

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

מ ש ר ד ה ח י נ ו ך ה פ ד ג ו ג י ת א ש כ ו ל מ ד ע י ם על ה ו ר א ת ה מ ת מ ט י ק ה מחוון למבחן מפמ"ר לכיתה ט', רמה מצומצמת , תשע"ב טור א'

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

DNS פרק 4 ג' ברק גונן מבוסס על ספר הלימוד "רשתות מחשבים" עומר רוזנבוים 1

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

(MODULE E) ב ה צ ל ח ה!

JMP ("לחימום"), לייצר "רב שיח" בין מורים/עוזרי הוראה לגבי השפעה של טכניקה זו או אחרת: על קליטה החומר על המוטיבציה לנצל כלים כדי להפוך לאוטו-דידקטים

אנגלית ספרות בהצלחה! /המשך מעבר לדף/ נספח: כישורי חשיבה )לפרק ראשון ושני( או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

ב. משרד החינוך בגרות לנבחנים אקסטרניים א נ ג ל י ת (MODULE B) הוראות מיוחדות: )2( בתום הבחינה החזר את השאלון למשגיח. בהצלחה!

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

יחידה ארגון המחשב ושפת סף: שאלות תרגול

THINKING ABOUT REST THE ORIGIN OF SHABBOS

ãówh,é ËÓÉÔê ÌW W É Å t" Y w f É ËÓÉÑ É èw É f Ñ u ð NNM YóQ' ÌW W É Y ÉgO d óqk É w f ym Éd É u ð NNM ÌWNQMH uqo ð NNM ÌWNQMH

ב. משרד החינוך בגרות לנבחנים אקסטרניים א נ ג ל י ת (MODULE B) הוראות מיוחדות: )2( בתום הבחינה החזר את השאלון למשגיח. בהצלחה!

מושגים בסיסיים תלמידים והורים יקרים,

Patents Basics. Yehuda Binder. (For copies contact:

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

Genetic Tests for Partners of CF patients

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

A R E Y O U R E A L L Y A W A K E?

הצעת תשובות לשאלות בחינת הבגרות אנגלית

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

בהצלחה! (MODULE C) Hoffman, Y. (2014). The Universal English-Hebrew, Hebrew-English Dictionary

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

פקס בחיבור המכשיר המשולב לפקס יש לעבור על השלבים הבאים: - חבר את כבל הטלפון לחיבור ה- LINE בגב המדפסת ואת צידו השני לשקע הטלפון בקיר.

מדריך למשתמש התקנה עצמית

קורס מטלב לפיסיקאים שיעור מס' 10: משתנים מורכבים

1.1. הקדמה (דיסק). מדריכי. (מחיצות) Link

SPSS 10.0 FOR WINDOWS

Relationships: Everything Else is Commentary

יסודות מבני נתונים. תרגול :9 ערימה - Heap

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

Theories of Justice

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

הנדסה-לאחור: שרשרת העלייה של Windows 7 חלק שני - VBR

פרק מיון וחיפוש - לשם מה? הגדרה

מספר השאלון: הצעת תשובות לשאלות בחינת הבגרות אנגלית (MODULE C) מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי قاموس إنجليزي - إنجليزي - عربي

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

Depth-First Search DFS

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

Reflection Session: Sustainability and Me

מדריך לניהול VPS טריפל סי מחשוב ענן בע"מ.

תרגול מס' 01 אלגוריתם דיניץ

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

מבחן באנגלית בהצלחה הצלחה!!! שם פרטי: שם משפחה: מס' תעודת זהות: תאריך: שם מרכז מנהל מרכז השכלה: תאריך בדיקת המבחן: כל הזכויות שמורות למשרד החינוך

הצגת המשחק תלמידים משחקים סיום. פתיחה 12 min. min. min. min פתיחה. Copyright 2015

sharing food intro price & extra drinks * ניתן להזמין מנות כשרות בתאום מראש for good memories

WHAT ATHEISM HAS LEARNED FROM RELIGION

Homework 10. Theoretical Analysis of Service Stations in Steady State. Priority Queues.

Visual C# Express יסודות מדעי המחשב 1 מהדורת עיצוב תשס"ו 2006 כתבה: יעל בילצ'יק (סופרין)

NATIONAL COUNCIL OF YOUNG ISRAEL. Shavuot Nation JEWISH EDITION. Compiled by Gabi Weinberg Teen Program Director

ASTM UL / FM / BS abesco

הטכנולוגיה בחינוך ד ר קובי גל אוניברסיטת בן גוריון בנגב

מספר ת"ז: יש לסמן את התשובה הטובה ביותר בתשובון. לא יינתן ניקוד על סימון תשובה בטופס הבחינה או במחברת הבחינה.

סיכומים למבחן בקומפילציה

SHABBOS, 10 TAMMUZ, 5778

למבחן ביסודות מדעי המחשב דוגמא

Web Services שפת SQL. כתבה: זהבה יעקובסון ליווי מקצועי : ארז קלר

The Connection between Town Planning, Public Taking (Appropriation) and Land Appraisal

Visual C# Express Edition 2005

Transcription:

עמוד 1 מתוך 25 :SFS משתנה המציין את הפעולה שרוצים לבצע. ערכים: 00 כתיבה (store) 01 קריאה (fetch) 10 הפקודה בוצעה 11 תקלה מודל מעבדזיכרון,(store זהו המקום שהמעבד רושם בו את התוכן שהוא רוצה להכניס לזיכרון (במקרה :MDR וזהו המקום שהזיכרון רושם בו תוכן כתובת כלשהי (במקרה שהמעבד ביקש.(fetch MAR מחזיק את תוכן הכתובת היושבת ב MDR,(store זהו המקום שהמעבד רושם בו את הכתובת אליה הוא רוצה לכתוב (במקרה :MAR וזהו המקום שהמעבד רושם בו את הכתובת ממנה הוא רוצה לקרוא (במקרה.(fetch רוחב הקו בביטים בין המשתנה למעבד ב PDP11 2 16 16 שם המשתנה SFS MDR MAR כיווני העברת המידע במודל מעבדזיכרון SFS CPU MDR MEM MAR CPU SFS MEM CPU MDR MEM CPU MAR MEM 1

עמוד 2 מתוך 25 Mode Name Syntax EA Comments 0 Register Rn האופרנד נמצא ברגיסטר 1 Register Deferred (Rn),@Rn Rn כתובת האופרנד נמצאת ברגיסטר 6 2 Auto Increment (Rn)+ Rn 3 Auto Increment Deferred @(Rn)+ (Rn) 4 Auto Decrement (Rn) Rn2 5 7 Auto Decrement Deferred Index (אבסולוטי) 27 Immediate (אבסולוטי) 37 @(Rn) X(Rn) (Rn2) X+ Rn Index Deferred (אבסולוטי ( @X(Rn) (X+Rn) pc MODES #K כתובת האופרנד נמצאת ברגיסטר בתום החישוב, הוסף 2 ל Rn הכתובת של כתובת האופרנד נמצאת ברגיסטר. בתום החישוב, הוסף 2 ל Rn מקודם ב 2 גם עבור movb לפני החישוב, הורד 2 מ Rn כתובת האופרנד נמצאת ברגיסטר לפני החישוב, הורד 2 מ Rn הכתובת של כתובת האופרנד נמצאת ברגיסטר. מקודם ב 2 גם עבור movb PC (לאחר קריאת הפקודה) Absolute (אבסולוטי ( @#K K 67 Relative A A 77 Relative Deferred @A (A) האופרנד בכתובת X+Rn instruction X לאחר שליפת PC X, מקודם ב 2. כתובת האופרנד בכתובת X+Rn instruction X לאחר שליפת PC X, מקודם ב 2. PC נמצא בכתובת המוצבעת ע"י K instruction K אם K הינה תווית, לך אל כתובתה האופרנד נמצא בכתובת K instruction K האופרנד נמצא בכתובת A l : instruction A m 2 m היא כתובת האופרנד בתוך ההוראה l+ 2 m l+ 4 m A הוא המרחק בין EA ובין 2 כתובת המלה הבאה לביצוע. כתובת האופרנד נמצאת בכתובת A l : instruction A m 2 הערה: השיטות המוקפות בעיגול מצריכות מלת זיכרון נוספת. 2

עמוד 3 מתוך 25 פקודות branch Opcode Word Offset 15 8 7 0 קידוד: WO מספר המלים שיש לקפוץ מערכו הנוכחי של ה,PC לאחר קריאת הפקודה. WO= destination PC 2 8 1= 2 מילים, הערה: מאחר שמוקצים רק 8 ביטים לקידוד ה,Offset ניתן לקפוץ רק 256 לכל היותר (עבור 11111111). בעצם, רק חצי מכך, אם רוצים לכלול גם קפיצה לאחור. חישוב ה Opcode הסופי: נעשה ע"י חיבור ה Opcode של פקודת ההסתעפות המתאימה עם W0, כאשר האחרון מיוצג באמצעות 8 ביטים. 1000 br here 1020 here : mov #3, r0 דוגמא: 1020 1002 16 W 0 = = = asr(16) = 7= 00000111 2 2 Opcode 0000000100000000 = + 0000000000000111 0000000100000111 = (000407) 8 פקודת jmp jmp A 0001 DD 15 6 5 0 קידוד: כאשר DD נקבע עפ"י שיטת המיעון של A. הקפיצה הינה אל הכתובת האפקטיבית! מרחק הקפיצה אינו מוגבל 3

עמוד 4 מתוך 25 פקודת sob A: sob rn, l 15 077 rn 9 8 6 Offset 5 0 קידוד: Offset מספר חיובי, בטווח 063, המציין את מספר המלים שיש לקפוץ אחורה Offset = A l + 2 1 1000 here : mov #3, r0 1020 sob r1, here דוגמא: 1020 1000 Offset= + 1 = 11 Opcode= 077 1 11 2 jsr r, subr n 004 rn DD rn r פקודת jsr ופקודת rts 00020 r 1). mov, ( sp) 1). mov, pc 2). mov pc, 2). mov ( sp) +, 3). mov # subr, pc n rts r r n n n r n ה PSW priority T N Z V C 57 4 3 2 1 0 חוקי המכונה: דגל C נדלק אמ"מ יש נשא בחיבור מה MSB דגל C נדלק אמ"מ אין נשא בחיסור מה MSB דגל V נדלק אמ"מ שני המחוברים/מחוסרים בעלי MSB זהה, והתוצאה בעלת MSB הפוך. או לחילופין: דגל C נדלק אם יש טעות בחישוב, כאשר האופרנדים ללא סימן. דגל V נדלק אם יש טעות בחישוב, כאשר האופרנדים עם סימן. 4

עמוד 5 מתוך 25 פקודות ההסתעפות Type Opcode Mnemonic Name Comments 002400 blt branch if ( N (~ V )) (~ N V ) N V = 1 less than Signed 003400 ble branch if less than or same 003000 bgt branch if 002000 bge branch if greater than or same ( N V ) Z greater than ~ (( N V ) Z) ~ ( N V ) N = V Unsigned Z&V branches C&V branches 101000 bhi branch if higher 103000 bhis branch if higher or 103400 blo same branch if lower 101400 blos branch if lower or same 001400 beq branch if equal 001000 bne branch if not equal 100400 bmi branch if minus 100000 bpl branch if plus 103400 bcs branch if carry set 103000 bcc branch if carry clear 102400 bvs branch if overflow set 102000 bvc branch if overflow clear unconditional 000400 br branch ~ (CvZ) ~C C (CvZ) Z ~ Z N ~ N C ~ C V ~ V 5

עמוד 6 מתוך 25 OpCodes של פקודות נפוצות Mnemonic OpCode add 06 asl 0063 asr 0062 bic 04 bit 03 bis 05 clr 0050 cmp 02 dec 0053 div 071RSS inc 0052 mov 01 mul 070RSS neg 0054 rti 000002 rtt 000006 sub 16 sxt 0067 tst 0057 טבלת עדיפויות עדיפות 1 2 3 4 5 6 7 ערך אוקטלי 40 100 140 200 240 300 340 6

עמוד 7 מתוך 25 פסיקות פסיקה תתבצע כאשר יתקיימו כל התנאים הבאים: ההתקן פעיל 1) = enable (read ההתקן ביקש פסיקה 1) = (ready/done ההתקן רשאי לפסוק 1) = enable (interrupt עדיפות החומרה של ההתקן הפוסק גדולה ממש מעדיפות התוכנה ברגע קבלת הפסיקה ביטים "מעניינים" באוגר הבקרה וקטורי פסיקה עדיפות חומרה כתובת אוגר הנתונים כתובת אוגר הבקרה התקן 11 7 6 0 TKB=177562 4 60/62 TKS=177560 מקלדת busy done interrupt enable read enable TPB=177566 4 64/66 TPS=177564 מסך 7 ready 6 interrupt enable 0 read enable CLS=177546 6 100/102 שעון interrupt enable 6 פסיקה וקטורי פסיקה OpCode bpt 14/16 000003 iot 20/22 000004 emt n 30/32 104000104377 trap n 34/36 104400104777 וקטורי פסיקה 4/6 4/6 4/6 10/12 24/26 Error Odd Address Stack Violation Stack Warning Illegal Opcode Power Failure הערות כתיבה לכתובות נמוכות מ 376 כתיבה לכתובות נמוכות מ 420 מבנה הפקודה של :emt/trap Opcode Parameter 15 8 7 0 קפיצה לשגרת טיפול בפסיקה חזרה משגרת טיפול בפסיקה 1). mov ( sp) +, pc 1). mov psw, ( sp) 2). mov ( sp) +, psw 2). mov pc, ( sp) 3). mov @# k, pc 4). mov@# k+ 2, psw כאשר k הינה הכתובת הראשונה בוקטור הפסיקה. 7

עמוד 8 מתוך 25 האסמבלר תוכנה המתרגמת תוכנית בשפת אסמבלי לשפת מכונה. LC משתנה פנימי של האסמבלר, המצביע בכל רגע נתון על הפקודה שהאסמבלר מטפל בה. זוהי הכתובת שהחל ממנה תיטען הפקודה שהאסמבלר עומד לייצר. קיים רק בזמן תרגום! PC מצביע על הפקודה הבאה לביצוע. קיים רק בזמן ריצה! תהליך התרגום בשני מעברים: מעבר ראשון: חישוב מספר המלים שצורכת כל פקודה בדיקת הסינטקס יצירת טבלת הסמלים בסוף מעבר ראשון נבדקת עקביות טבלת הסמלים. כלומר, האם כל הסמלים שמשתמשים בהם בתוכנית אכן מוגדרים, ואין סמלים כפולים. בתום מעבר ראשון, אם לא התגלתה טעות, טבלת הסמלים שלמה. מעבר שני: חישוב כל האופרנדים: המידיים (כמו #2000) והמסתמכים על תוויות (כמו A#) יצירת קוד המכונה. הכתובות וערכי התוויות לחישוב האופרנדים נלקחים מטבלת הסמלים. טעויות תרגום: הטעות תווית מוגדרת פעמיים פקודה לא חוקית מספר אופרנדים שגוי שימוש בתווית לא מוגדרת קפיצה רחוקה מדי ביטוי שגוי ביצוע sob קדימה מתגלה במעבר ראשון ראשון ראשון שני שני שני שני הערות ודוגמאות למשל, פקודה שאינה קיימת add #2 על אף שטבלת הסמלים שלמה בסוף מעבר ראשון תקף לפקודות הסתעפות add #88,r0 חישוב האופרנדים נעשה במעבר שני המידע הנשלח אל הקשרטען ע"י האסמבלר: אורך של כל מודול. רשימת כל הסמלים שיש לבצע עליהם relocation (לא רלבנטי לקוד.(PIC רשימת ה entry של כל מודול רשימת כל הסמלים המוגדרים במודול, ושניתן להשתמש בהם במודולים אחרים. רשימת ה extrn של כל מודול רשימת כל הסמלים המוגדרים במודולים אחרים, ושנעשה בהם שימוש במודול הנוכחי. המודול עצמו קוד המכונה. 8

עמוד 9 מתוך 25 קישור וטעינה הנחות אסמבלר: כתובת תחילת הטעינה של כל מודול הינה 0. ערכם של הסמלים החיצוניים במודול הינו 0. טבלת :ESD טבלת מידע על הסמלים המיוחדים במודול כאלה שהוגדרו ע"י ההנחיות.csesct,.entry,.extrn Symbol Type Relative Location SD עבור שם המודול שהוגדר ע"י.csect הכתובת היחסית של כל סמל LD עבור הסמלים csect הנוכחי. מרחקו מתחילת ה המקומיים שהוגדרו ע"י.entry סמלים חיצוניים לא ידועים בזמן אסמבלי, לכן אלה לא מקבלים כתובת יחסית. ER עבור הסמלים החיצוניים שהוגדרו ע"י.extrn שם הסמל שהוגדר כמיוחד בראש המודול טבלת :RLD טבלת מידע על הכתובות במודול, שאותן יש לתקן/לשנות בזמן טעינה. Symbol flag Relative Location + תוספת הסמל שאת ערכו יש הכתובת היחסית של הסמל הפחתה להוסיף/להפחית מהכתובת מתחילת ה csect הנוכחי. היחסית. הערה חשובה: טבלת RLD נקראת מימין לשמאל! לדוגמא, עבור שורה בטבלה: + 02,sym יש לקרוא: " לכתובת 02 יש להוסיף את ערך התווית."sym 9

עמוד 10 מתוך 25 בניית טבלת RLD האופרנד מכיל תווית מקרא: שם התווית החיצונית ExtLabel שם המודול הנוכחי CrntCSect תווית מקומית תווית חיצונית התייחסות רלטיבית התייחסות אבסולוטית התייחסות רלטיבית התייחסות אבסולוטית ExtLabel + RL ExtLabel + RL CrntCSect RL CrntCSect + RL אין שינוי בטבלה! tst X+2(r2) jsr pc,sub mov list(r0),r0 mov list,r0 האופרנד לא מכיל תווית התייחסות רלטיבית התייחסות אבסולוטית השורה הנוספת לטבלה אין שינוי בטבלה! CrntCSect RL mov #2000,r0 דוגמאות mov 2000,r0 הנחייה לאסמבלר (directive) תווית מקומית תווית חיצונית ExtLabel + RL CrntCSect + RL.word extern.word local 10

עמוד 11 מתוך 25 קישור המודולים טבלת ESD וטבלת RLD של כל אחד מהמודולים סדר הקישור load module מושלם, עד כדי כתובת תחילת הטעינה טבלת טעינה טבלת RLD מאוחדת ומצומצמת, המכילה את הכתובות שלהן יש להוסיף/להחסיר את כתובת תחילת הטעינה. קלט: פלט: פעולות הקשר: 1). בניית מפת טעינה.(2.(3 כל המודולים מאוחדים למודול אחד (עפ"י סדר הקישור), שתחילתו בכתובת 0, וכל "מודול מתאחד" מתחיל בכתובת הזוגית הראשונה שאינה נמצאת בשימוש המודול הקודם לו, ושאליו הוא מתאחד. למשל, עבור מודולים,A,B אם A מסתיימת בכתובת 30, אזי המודול B, המתאחד אליו, יתחיל בכתובת 32, וכל הכתובות יוזזו במספר זה. איחוד טבלות :ESD בדיקה שלכל ER יש LD מתאים (אחרת, שגיאה בזמן קישור) בדיקה ש LD הוא יחיד עבור ER מסוים (אחרת, שגיאה בזמן קישור) אם הבדיקות תקינות מחיקת שורות ER מהטבלה איחוד הטבלות עפ"י העיקרון המתואר בסעיף 1)., ולפי סדר הקישור איחוד טבלות :RLD איחוד הטבלות עפ"י העיקרון המתואר בסעיף 1)., ולפי סדר הקישור איתור הכתובות בטבלה, שעבורן יש תיקון (+) וגם תיקון () עבור כתובת כזו, יש לבצע את התיקונים הרשומים בטבלה בקוד הטעינה, כאשר ערכי הסמלים נלקחים מטבלת ה ESD המאוחדת. מחיקת השורות הנ"ל. ביצוע התיקונים בקוד הטעינה עבור השורות הנותרות בטבלת ה RLD. השמטת עמודת ה Symbol מהטבלה המתקבלת (זוהי טבלת הטעינה) בנקודה זו, סוף תהליך הקישור, ה load module מושלם, עד כדי הזזה של הכתובות המופיעות בטבלת הטעינה בכתובת תחילת הטעינה. פעולות הטען: טעינה השג את כתובת תחילת הטעינה. לכל שורה בטבלת הטעינה, הוסף/החסר את כתובת תחילת הטעינה אל/מן הכתובת היחסית המתאימה כאשר ערכי הסמלים נלקחים מתוך טבלת ה ESD המאוחדת. 11

עמוד 12 מתוך 25 נתונים שלושת המודולים הבאים: דוגמא מסכמת: (מתוך מועד א' אביב תשס"ב) 000000 1.csect m1 000000 2.entry data,pd 000000 3.extrn input,print 000000 4 000000 5 TKS = 177560 000000 6 TKB = 177562 7 000000 012737 000000 000060 8 main: mov #input, @#60 000006 012737 000101 177560 9 mov #101, @#TKS 000014 005767 000010 10 loop: tst data 000020 001775 11 beq loop 000022 004067 177752 12 jsr r0, print 000026 000000 13 halt 14 000030 000000 15 data:.blkw 1 000032 000030 16 pd:.word data 000000 1.csect m2 000000 2.entry input 000000 3.extrn data 4 000000 5 MASK = 177600 000000 6 TKS = 177560 000000 7 TKB = 177562 000000 8 000000 013701 177562 9 input: mov @#TKB, r1 000004 042701 177600 10 bic #MASK, r1 000010 010137 000000 11 mov r1, @#data 000014 005237 177560 12 inc @#TKS 000020 000002 13 rti 000000 1.csect m3 000000 2.entry print 000000 3.extrn pd 4 000000 5 TPS = 177564 000000 6 TPB = 177566 000000 7 000000 105737 177564 8 print: tstb @#TPS 000004 100375 9 bpl print 000006 017737 177766 177566 10 mov @pd, @#TPB 000014 000200 11 rts r0 12

עמוד 13 מתוך 25 שלב 1 השלמת השורות החסרות ב listing שם המודול מס' שורה ההוראה מלה ראשונה להוספה 000000 מלה שנייה להוספה 000060 הסבר מילה ראשונה: input הוא סמל חיצוני, לכן מקבל את הערך 0, עפ"י הנחות אסמבלר (עמ' 8) מילה שנייה: עפ"י שיטת מיעון 37 ת, וכן המלה השנייה הינו הערך הרשום באופרנד. כלומר, 60. עפ"י שיטת מיעון 27 (עמ' 2), תוכן המלה השנייה הינו הערך הרשום באופרנד: 101. data הינו סמל מקומי, לכן יש להוסיף את כתובתו בזיכרון. כלומר, 30. מילה ראשונה: ה Opcode של bic הינו 04 (עמ' 5). אופרנד ראשון ממוען בשיטה 27, ואופרנד שני בשיטה 0 עם רגיסטר 1, לכן 01 27 04. מילה שנייה: MASK הינו קבוע, לכן תוכן המילה הוא ערכו. כלומר, 177600 data סמל חיצוני, לכן מקבל 0 עפ"י הנחות אסמבלר. TPS הינו קבוע, לכן תוכן המילה הינו ערך הקבוע, עפ"י שיטת מיעון 37. ה Opcode של bpl הינו print.100000 הוא סמל מקומי שכתובתו 0. ה pc לאחר קריאת הפקודה הינו 6, לכן ה offset הינו (עמ' 3): (06)/2 = 3 = 11111101 = 375 ולכן, ה Opcode הסופי הינו הסכום 100375. ה Opcode של mov הינו 01, אופרנד ראשון ממוען בשיטה 77, ואופרנד שני בשיטה 37, לכן מקבלים 01 77 37 177600 000101 000030 042701 000000 177564 100375 017737 mov #input,@#60 mov #101,@#TKS pd:.word data bic #MASK,r1 mov r1,@#data tstb @#TPS bpl print mov @pd,@#tpb 8 9 16 10 11 8 9 10 m1 m2 m3 ההשלמות מודגשות באדום במודולים שבעמוד קודם. שלב 2 בניית טבלאות טבלות :ESD 1). עפ"י הוראות בניית טבלת ESD (עמ' 8), כל שעלינו לעשות הוא לאסוף את הסמלים "המיוחדים" מכל מודול (בשלוש שורות ראשונות), ולרשום אותם בעמודה ראשונה של הטבלה. 2). לכל סמל לרשום את סוגו בעמודה שנייה בטבלה SD עבור סמל שהוגדר תחת ההנחיה.csect (שם המודול) LD עבור הסמלים שהוגדרו תחת ההנחיה.entry (סמלים מקומיים) ER עבור הסמלים שהוגדרו תחת ההנחיה.extrn (סמלים חיצוניים) 3). בעמודה שלישית יש להוסיף את הכתובת היחסית של הסמל ביחס לכתובת תחילת המודול. מאחר שכתובת תחילת המודול הוגדרה להיות 0 (הנחות אסמבלר), הכתובת היחסית הינה הכתובת שבה מוגדר הסמל. כמובן שאין אזכור בעמודה זו לסמלים חיצוניים, שהרי אינם ידועים במודול הנוכחי. נקבל את הטבלות הבאות: 13

עמוד 14 מתוך 25 ESD Symbol Type Location m1 SD 00 data LD 30 pd LD 32 input ER print ER ESD Symbol Type Location m2 SD 0 input LD 0 data ER ESD Symbol Type Location m3 SD 0 print LD 0 pd ER טבלות :RLD לשם בניית טבלות אלה, ניצמד לתרשימי הבנייה המוגדרים בעמ' 9, עפ"י אופי האופרנדים. כדי לבנות את הטבלה, עלינו לעבור על כל שורות הקוד במודול ולבחון את האופרנדים, ולהחליט אם יידרשו בהם תיקונים מאוחר יותר. 000000 1.csect m1 000000 2.entry data, pd 000000 3.extrn print, input 000000 4 000000 5 TKS = 177560 000000 6 TKB = 177562 7 000000 8 main: mov #input, @#60 000006 9 mov #101, @#TKS 000014 10 loop: tst data 000020 11 beq loop 000022 12 jsr r0, print 000026 13 halt 14 000030 15 data:.blkw 1 000032 16 pd:.word data מודול m1: 14

עמוד 15 מתוך 25 שורה 8: האופרנד הראשון מכיל תווית,input לכן נביט על התרשים הראשון. התווית input הינה תווית חיצונית למודול m1, וממוענת בשיטה אבסולוטית (27), לכן יש להוסיף לטבלה את השורה: כאשר 02 היא הכתובת של המילה ביחס לתחילת ה csect.,input + 02 האופרנד השני אינו מכיל תווית, לכן נביט על תרשים שני. שיטת המיעון של האופרנד הינה אבסולוטית (37), לכן אין שינוי בטבלה. כלומר, אין צורך בתיקון לאופרנד השני. שורה 9: האופרנד הראשון אינו מכיל תווית, והוא ממוען בשיטה אבסולוטית, לכן אין שינוי בטבלה. האופרנד השני גם אינו מכיל תווית (זהו קבוע) וממוען אבסולוטית, לכן אין שינוי בטבלה. שורה 10: האופרנד מכיל תווית,data והיא תווית מקומית הממוענת בשיטה יחסית (67), לכן אין שינוי בטבלה. שורה 11: האופרנד מכיל תווית,loop והיא תווית מקומית הממוענת בשיטה יחסית, לכן אין שינוי בטבלה. שורה 12: האופרנד מכיל תווית חיצונית,print הממוענת בשיטה יחסית (67), לכן עפ"י תרשים ראשון, יש להוסיף שתי שורות לטבלה: + 24 print ואת השורה 24 m1. שורה 1315: לא מצריך התלבטות. שורה 16: זוהי הנחייה לאסמבלר, לכן נביט על תרשים שלישי. בהנחיה מופיעה התווית data שהיא מקומית, לכן יש להוסיף את השורה m1. + 32 נאסוף את התוצאות לטבלה, ונקבל: RLD m1 Symbol Flag Location input + 02 print + 24 m1 24 m1 + 32 15

עמוד 16 מתוך 25 1.csect m2 2.entry input 3.extrn data 4 000000 5 MASK = 177600 000000 6 TKS = 177560 000000 7 TKB = 177562 000000 8 000000 9 input: mov @#TKB, r1 000004 10 bic #MASK, r1 000010 11 mov r1, @#data 000014 12 inc @#TKS 000020 13 rti מודול m2: שורה 9: אופרנד ראשון לא מכיל תווית, וממוען בשיטה אבסולוטית, לכן אין שינוי בטבלה. שורה 10: אופרנד ראשון לא מכיל תווית, וממוען בשיטה אבסולוטית, לכן אין שינוי בטבלה. שורה 11: אופרנד שני מכיל תווית חיצונית,data וממוען בשיטה אבסולוטית, לכן יש להוסיף את השורה + 12 data שורה 12: האופרנד לא מכיל תווית, וממוען בשיטה אבסולוטית, לכן אין שינוי בטבלה. שורה 13: לא מכילה אופרנדים RLD m2 Symbol Flag Location data + 12 נאסוף את התוצאות לטבלה, ונקבל: 16

עמוד 17 מתוך 25 1.csect m3 2.entry print 3.extrn pd 4 000000 5 TPS = 177564 000000 6 TPB = 177566 000000 7 000000 8 print: tstb @#TPS 000004 9 bpl print 000006 10 mov @pd, @#TPB 000014 11 rts r0 מודול m3: שורה 8: האופרנד לא מכיל תווית, וממוען בשיטה אבסולוטית, לכן אין שינוי בטבלה. שורה 9: האופרנד מכיל תווית מקומית,print הממוענת בשיטה יחסית, לכן אין תיקונים בטבלה. שורה 10: האופרנד הראשון מכיל תווית חיצונית,pd וממוען בשיטה יחסית, לכן בכתובת 10 יש לבצע שני תיקונים: + 10 pd ותיקון 10 m3 האופרנד השני לא מכיל תווית, וממוען בשיטה אבסולוטית, לכן אין שינוי בטבלה. שורה 11: האופרנד הוא רגיסטר, אין שינוי בטבלה. נאסוף את התוצאות לטבלה, ונקבל: RLD Symbol Flag Location pd + 10 m3 10 לפני שנעבור לתהליך הקישור, כדאי יהיה לשמור רישום על אורכו של כל אחד מהמודולים. האורך הינו כמובן אורך יחסי, והוא פשוט מציין את מספר המלים בזיכרון שצורך כל מודול. אם אורך של מודול מסוים הינו X, אזי המודול המתאחד אליו יתחיל בכתובת 2+X, אם X הינו זוגי, או בכתובת 3+X, אם אי זוגי. נוסיף גם עמודה, המציינת את הכתובת החדשה של תחילת המודולים המתאחדים למודולים אחרים: טבלת אורכים: שם המודול אורך המודול כתובת תחילת המודול לאחר איחוד m1 32 00 m2 20 34 (0+32+2) m3 14 56 (34+20+2) 17

עמוד 18 מתוך 25 שלב 3 קישור השלבים שיתבצעו פה זהים לחלוטין למתואר בעמ' 10. בניית מפת טעינה: בשלב זה נאחד את כל המודולים למודול אחד. המודול הראשון, m1, יתחיל בכתובת 0. המודול m2, המתאחד אליו, יתחיל בכתובת 34 (עפ"י טבלת האורכים), וכל שורה במודול תוזז במספר הזה. מודול m3 יתחיל בכתובת 56, וכל שורה בו תוזז במספר זה. כמובן שאין צורך יותר בסמלים "המיוחדים", לכן אלה יוסרו מהתוכנית: 000000 1 TKS = 177560 000000 2 TKB = 177562 000000 3 TPS = 177564 000000 4 TPB = 177566 000000 5 MASK = 177600 000000 012737 000000 000060 6 main: mov #input, @#60 000006 012737 000101 177560 7 mov #101, @#TKS 000014 005767 000010 8 loop: tst data 000020 001775 9 beq loop 000022 004067 177752 10 jsr r0, print 000026 000000 11 halt 000030 000000 12 data:.blkw 1 000032 000030 13 pd:.word data 000000 14 000034 013701 177562 15 input: mov @#TKB, r1 000040 042701 177600 16 bic #MASK, r1 000044 010137 000000 17 mov r1, @#data 000050 005237 177560 18 inc @#TKS 000054 000002 19 rti 000056 105737 177564 20 print: tstb @#TPS 000062 100375 21 bpl print 000064 017737 177766 177566 22 mov @pd, @#TPB 000072 000200 23 rts r0 18

עמוד 19 מתוך 25 איחוד טבלות :ESD לאחר שוידאנו כי כל סמל המוגדר ER בטבלות מוגדר גם, LD נסיר את שורות ER מהטבלות. כעת נאחד את הטבלות לטבלה אחת, כאשר זוכרים לבצע הזזה של 34 בכתובות היחסיות של טבלת m2, והזזה של 56 בכתובות היחסיות של טבלה m3 (עפ"י טבלת האורכים). נקבל את טבלת ESD המאוחדת: Joined ESD Type Location Symbol m1 SD 00 data LD 30 pd LD 32 input ER print ER m2 SD 0 34 input LD 0 34 data ER m3 SD 0 56 print LD 0 56 pd ER Joined ESD Symbol Type Location m1 SD 00 data LD 30 pd LD 32 m2 SD 34 input LD 34 m3 SD 56 print LD 56 בשלב זה, יש בידינו את טבלת הסמלים המאוחדת ומיקומם בזיכרון ביחס לתחילת הכתובת במפת הטעינה. כלומר, ביחס לכתובת 0. 19

עמוד 20 מתוך 25 איחוד טבלות :RLD בדיוק באותו אופן, נקבל את טבלת ה RLD המאוחדת: Joined RLD Symbol Flag Location input + 02 print + 24 m1 24 כתובת עם תיקון (+) וגם תיקון () m1 + 32 data + 46 pd + 66 m3 66 כעת, עפ"י המתואר בעמ' 10, נאתר את הכתובות שעבורן יש תיקון (+) וגם (). קל לראות שאלו הן הכתובות 24 ו 66. כעת, עלינו לתקן את השורות האלה במפת הטעינה: 000022 004067 177752 jsr r0, print כתובת 24: עלינו להוסיף לכתובת 24 (המכילה כעת את הערך 177752) את הערך print=56 ולהוריד ממנה את הערך 0=m1, כאשר ערכי הסמלים נלקחו מתוך טבלת ה ESD המאוחדת. נבצע את החישוב ונקבל את הערך 000030 (שווה לבדוק). השורה המתוקנת הינה כעת: 000022 004067 000030 jsr r0, print 000064 017737 177766 177566 mov @pd, @#TPB כתובת 66: עלינו להוסיף לכתובת 66 (המכילה כעת את הערך 177766) את הערך pd=32 ולהוריד ממנה את הערך 56=m3, כאשר ערכי הסמלים נלקחו מתוך טבלת ה ESD המאוחדת. נבצע את החישוב ונקבל את הערך 177742. השורה המתוקנת הינה כעת: 000064 017737 177742 177566 mov @pd, @#TPB לאחר שבוצעו כל התיקונים במפת הטעינה, (הוספת input=34 לכתובת 02, הוספת 0=m1 לכתובת 32 והוספת data=30 לכתובת 46) נוריד את השורות "המיוחדות" מהטבלה, ונשמיט ממנה את עמודת שמות הסמלים (השמאלית ביותר). נקבל את טבלת ה RLD המצומצמת הנקראת טבלת הטעינה. 20

עמוד 21 מתוך 25 Flag Location + 02 טבלת הטעינה: + 32 + 46 ה :load module 000000 1 TKS = 177560 000000 2 TKB = 177562 000000 3 TPS = 177564 000000 4 TPB = 177566 000000 5 MASK = 177600 000000 012737 000034 000060 6 main: mov #input, @#60 000006 012737 000101 177560 7 mov #101, @#TKS 000014 005767 000010 8 loop: tst data 000020 001775 9 beq loop 000022 004067 000030 10 jsr r0, print 000026 000000 11 halt 000030 000000 12 data:.blkw 1 000032 000030 13 pd:.word data 000000 14 000034 013701 177562 15 input: mov @#TKB, r1 000040 042701 177600 16 bic #MASK, r1 000044 010137 000030 17 mov r1, @#data 000050 005237 177560 18 inc @#TKS 000054 000002 19 rti 000056 105737 177564 20 print: tstb @#TPS 000062 100375 21 bpl print 000064 017737 177742 177566 22 mov @pd, @#TPB 000072 000200 23 rts r0 תם תהליך הקישור. בנקודה זו, מודול הטעינה מושלם לגמרי, עד כדי הזזה בכתובת תחילת הטעינה. 21

עמוד 22 מתוך 25 שלב 4 טעינה נניח שהתוכנית נטענת לכתובת 1000, אזי כתובות מודול הטעינה יוזזו בערך זה, ובנוסף, יתווסף ערך זה לכל הערכים בכתובות המופיעות בטבלת הטעינה (כתובות (1046,1032,1002 התוכנית הסופית: 000000 1 TKS = 177560 000000 2 TKB = 177562 000000 3 TPS = 177564 000000 4 TPB = 177566 000000 5 MASK = 177600 001000 012737 001034 000060 6 main: mov #input, @#60 001006 012737 000101 177560 7 mov #101, @#TKS 001014 005767 000010 8 loop: tst data 001020 001775 9 beq loop 001022 004067 000030 10 jsr r0, print 001026 000000 11 halt 001030 000000 12 data:.blkw 1 001032 001030 13 pd:.word data 000000 14 001034 013701 177562 15 input: mov @#TKB, r1 001040 042701 177600 16 bic #MASK, r1 001044 010137 001030 17 mov r1, @#data 001050 005237 177560 18 inc @#TKS 001054 000002 19 rti 001056 105737 177564 20 print: tstb @#TPS 001062 100375 21 bpl print 001064 017737 177742 177566 22 mov @pd, @#TPB 001072 000200 23 rts r0 22

דומע 23 ךותמ 25 23 בשחמה תונכתו ןוגרא :'א חפסנ (רחא רוקממ חקלנ) תורמה תלבט ךרע ילמיצד ךרע ילטקוא םילשמ ךרע ילטקואב 2ל ךרע ילמיצד ךרע ילטקוא םילשמ ךרע לטקואב 2ל 1 1 177777 44 54 177724 2 2 177776 45 55 177723 3 3 177775 46 56 177722 4 4 177774 47 57 177721 5 5 177773 48 60 177720 6 6 177772 49 61 177717 7 7 177771 50 62 177716 8 10 177770 51 63 177715 9 11 177767 52 64 177714 10 12 177766 53 65 177713 11 13 177765 54 66 177712 12 14 177764 55 67 177711 13 15 177763 56 70 177710 14 16 177762 57 71 177707 15 17 177761 58 72 177706 16 20 177760 59 73 177705 17 21 177757 60 74 177704 18 22 177756 61 75 177703 19 23 177755 62 76 177702 20 24 177754 63 77 177701 21 25 177753 64 100 177700 22 26 177752 65 101 177677 23 27 177751 66 102 177676 24 30 177750 67 103 177675 25 31 177747 68 104 177674 26 32 177746 69 105 177673 27 33 177745 70 106 177672 28 34 177744 71 107 177671 29 35 177743 72 110 177670 30 36 177742 73 111 177667 31 37 177741 74 112 177666 32 40 177740 75 113 177665 33 41 177737 76 114 177664 34 42 177736 77 115 177663 35 43 177735 78 116 177662 36 44 177734 79 117 177661 37 45 177733 80 120 177660 38 46 177732 81 121 177657 39 47 177731 82 122 177656 40 50 177730 83 123 177655 41 51 177727 84 124 177654 42 52 177726 85 125 177653 43 53 177725 86 126 177652

עמוד 24 מתוך 25 נספח ב': הערות וחידות פקודות הסתעפות המכילות בתוכן הנחיות לאסמבלר מקודדות באותו אופן. דוגמא: נניח שהפקודה 6+. br נמצאת בכתובת 1054, אזי הפקודה מעבירה אותנו אל הכתובת = 1062 6 1054. + כעת, נחשב את ה Offset : = 2 1056)/2,(1062 לכן ה Opcode הינו.000402 יהי t הביט הדולק במספר X, אזי הפקודה div #X,r0 שקולה לפקודה t asr r0 פעמים, והפקודה mul #X,r1 שקולה לפקודה t asl r1 פעמים. (עבור 0=t אין הזזה) למשל, נניח שברגיסטר r1 נמצא הערך 2, אזי הפקודה mul r1,#40 תניב את התוצאה 100. הערך הבינארי של 40 הינו 000000000000100000. ביט מספר 6 דולק, לכן עלינו לזוז 5 צעדים ימינה. כלומר, לערך 100=0000000001000000. הערה: אם יש שני ביטים דולקים, או יותר, רק הביט הראשון (הנמוך ביותר) יוזז על פי חוק זה. שאר הביטים יועברו על פי החוק הבא: אם ביט u דולק, אזי ביט 1+u ידלוק ביעד. למשל, עבור,mul r1,#45 נקבל את התוצאה 112. הערך הבינארי של 45 הינו 100101. הביט 0 דולק, לכן אין הזזה במספר = 2 010. עוד דולקים, הביטים 2 ו 5, לכן נדליק במספר 2 את הביטים 3 ו 6, בהתאמה. נקבל = 1001010 112 אוקטאלי. כדי לייצג מספר שלילי בן m ביטים באמצעות n ביטים,(n>m) עלינו להוסיף משמאל nm ביטים, כאשר כולם דולקים. למשל, אם נרצה לייצג את 10 באמצעות 5 ביטים, נוסיף משמאל 3 ביטים דולקים: 11110 נניח כי,xy=z אזי האופרנד x y( r n ) למשל, נניח כי בכתובת 2002 נמצא הערך 5, וכן יחושב כמו. z( r n ) r 0 = 2000 5 ל r1. 0 4 mov תכניס את הערך אזי הפקודה 2( r ), r1 24

עמוד 25 מתוך 25 מה עושה הפקודה.?br גורמת ללולאה אינסופית! הפקודה הנ"ל שקולה לפקודה 0+..br נניח שהפקודה יושבת בכתובת 2000, אזי ה Offset הינו 1 =2/[2002(2000+0)]. כלומר, זהו מספר המלים המילים שעלינו לקפוץ מערכו של ה pc, לאחר קריאת הפקודה. כלומר, מהערך 2002. כלומר, עלינו לקפוץ מילה אחת אחורה, אל הכתובת 2000, וחוזר חלילה. למה תגרום הפקודה 1000+.?br לשגיאה על קפיצה רחוקה מדי! 7 כפי שנאמר (עמ' 3), נוכל לקפוץ לכל היותר 2 מילים. נניח כעת שהפקודה נמצאת בכתובת X, אזי ה Offset יהיה: = 776/2,[(X+1000)(X+2)]/2 וכמובן שלא ניתן לייצג את 776 באמצעות 8 ביטים. השגיאה תתגלה בזמן תרגום, במעבר שני, שהרי שם מתבצע חישוב האופרנדים. למה תגרום הפקודה jmp pc ומתי תתגלה? לשגיאת "שיטה לא חוקית" ותתגלה בזמן ריצה. כזכור, הקפיצה נעשית לכתובת האפקטיבית בלבד, ולשיטת מיעון 0 אין כתובת אפקטיבית. למה תגרום הפקודה?jmp #147 ללולאה אינסופית! נניח שהפקודה נמצאת בכתובת X, אז הקפיצה תהיה לכתובת 2+X, עפ"י שיטת מיעון 27. בכתובת זו נמצא הערך 000147. אם נבחן ערך זה, נגלה שזו בעצם הפקודה (pc),jmp שהרי ה Opcode של jmp הינו 0001. כלומר, תתבצע קפיצה אל הכתובת האפקטיבית.pc2 כלומר, אל 2+X שוב, וחוזר חלילה. 177774.?mul מכיל את הערך 100000. מה יהיה ערכו לאחר הפקודה r0,#10 r0 מאחר שהרגיסטר זוגי, תוצאת המכפלה תשב ברגיסטרים r0,r1 כאשר r1 יהווה את המילה הנמוכה. כפי שהוער למעלה, הפקודה mul יכולה להתבצע באמצעות פקודת,asl לכן הפקודה הנ"ל שקולה 10). 8 המספר 100000 המיוצג ב 16 ביטים הוא המספר לפקודה 3 asl r0r1 פעמים =1000) 37777700000 המיוצג באמצעות 32 ביט. 1000000000000000).(1111111111111111 כעת נבצע את הפקודה על 3 r0r1 פעמים. אחרי הזזה ראשונה נקבל: 11111111111111110000000000000000 אחרי הזזה שנייה נקבל: 11111111111111100000000000000000 אחרי הזזה שלישית נקבל: 11111111111111000000000000000000 ניקח את 16 הביטים הראשונים (משמאל, של r0): 1111111111111100 וזהו בדיוק הערך 177774 באוקטלי. למה שקולה הפקודה., r0? sob לפקודה.clr r0 הפקודה הנ"ל שקולה לפקודה :x, sob r0,x לכן השורה מתבצעת כל עוד r0 שונה מאפס. 25